package com.pattern.observer.jdkdemo;

import java.util.Observable;

/**
 * JDK自带了观察者模式的类
 * Observable是被观察者
 * 这里模拟博主。发新帖子后他的关注者会收到通知
 */
public class Blogger extends Observable {
    private String name;
    public Blogger(String name){
        this.name = name;
    }
    public String getName() {
        return name;
    }


    public void publicNewBlog(Blog blog){
        System.out.println("博主" + name + "发布了新帖：《" + blog.getName() + "》");
        /*
        看源码可知此处修改了一个标记变量changed。表示做了修改
         */
        setChanged();
        /*
        方法名就可看出是通知所有关注者，可传递一个参数。看源码可知，Observable类维护了一个集合，里面保存了所有关注者对象，关注者都是Observer接口的实现，都实现了update方法，
        关注者可以实现各自的逻辑，针对被观察者的变化做出相应的更新。
        这里循环挨个调用各个关注者的update方法。
         */
        notifyObservers(blog);
    }

}
